﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace DelegateDEmo
{
    class Program
    {
        // делегат, який повертає ціле число та приймає два цілих числа
        delegate int OperDelegate(int a, int b);

        static void Main(string[] args)
        {
            int x = 10;
            int y  = 20;

            // для делегата присвоюємо будьякий метод, у якого співпадає сигнатура
            OperDelegate adeg = Operations.Add;
            Console.WriteLine("Add: {0} + {1} = {2}",x,y,adeg(x,y));

            OperDelegate mdeg = Operations.Multiply;
            Console.WriteLine("Mul: {0} + {1} = {2}", x, y, mdeg(x, y));

            OperDelegate sdeg = Operations.Subtruct;
            Console.WriteLine("Sub: {0} + {1} = {2}", x, y, sdeg(x, y));

            // виклик делегуючої ф-ції/метода відбувається за доп. круглих дужок
            // int res = OperDelegate(20, 10)
            
        }
    }
}
